package main

import "fmt"

//channel的遍历
//如果通道关闭，读多写少，没有了就是默认值，
//例如，int 就是0，如果没有关闭就会死锁。

//方法1：for循环+if判断
func main() {
	c := make(chan int)
	go func() {
		for i := 0; i < 10; i++ {
			c <- i
		}
		close(c)
	}()
	for i := 0; i < 10; i++ {
		r := <-c
		fmt.Printf("r: %v\n", r)
	}
	// for {
	// 	if data, ok := <-c; ok {
	// 		fmt.Printf("data: %v\n", data)
	// 	} else {
	// 		break
	// 	}
	// }
}

//方法2：for range
// func main() {
// 	c := make(chan int)
// 	go func() {
// 		for i := 0; i < 10; i++ {
// 			c <- i
// 		}
// 		close(c)
// 	}()
// 	for v := range c {
// 		fmt.Printf("v: %v\n", v)
// 	}

// }
